# coding:utf8
# 
# file = open('./aa.html', 'rb') 
# html = file.read() 
# bs = BeautifulSoup(html,"html.parser") # 缩进格式
# print(bs.prettify()) # 获取title标签的所有内容
# print(bs.title) # 获取title标签的名称
# print(bs.title.name) # 获取title标签的文本内容
# print(bs.title.string) # 获取head标签的所有内容
# print(bs.head) # 获取第一个div标签中的所有内容
# print(bs.div) # 获取第一个div标签的id的值
# print(bs.div["id"]) # 获取第一个a标签中的所有内容
# print(bs.a) # 获取所有的a标签中的所有内容
# print(bs.find_all("a")) # 获取id="u1"
# print(bs.find(id="u1"))
# 
# re.match(pattern, string, flags=0) 				从字符串的起始位置匹配，如果起始位置匹配不成功的话，match()就返回none
# re.search(pattern, string, flags=0) 				扫描整个字符串并返回第一个成功的匹配
# re.findall(pattern, string, flags=0) 				找到RE匹配的所有字符串，并把他们作为一个列表返回
# re.finditer(pattern, string, flags=0) 			找到RE匹配的所有字符串，并把他们作为一个迭代器返回
# re.sub(pattern, repl, string, count=0, flags=0) 	替换匹配到的字符串
# 
# 函数参数说明：
# pattern:匹配的正则表达式
# string：要匹配的字符串
# flags：标记为，用于控制正则表达式的匹配方式，如：是否区分大小写，多行匹配等等。
# repl：替换的字符串，也可作为一个函数
# count：模式匹配后替换的最大次数，默认0表示替换所有匹配

from bs4 import BeautifulSoup

import re

from urllib.parse import urlparse, urljoin

class ParseManage(object):

	def do(self,url,content):
		if url is None or content is None:
			return

		soup = BeautifulSoup(content,"html.parser")

		urls = self._getUrls(url,soup)

		data = self._getData(url,soup)

		return data,urls

	def _getUrls(self,url,soup):
		urls = set();
		links = soup.find_all('a',href=re.compile(r"/detail/\d{6}"))
		for link in links:
			newUrl = link['href']
			fullUrl = urljoin(url,newUrl)
			urls.add(fullUrl)
		return urls

	def _getData(self,url,soup):
		data = {}

		data['url'] = url

		mod = soup.find('div',class_='post-mod post-left')
		if mod is None:
			return 

		title_node = mod.find('h1')

		data['title'] = title_node.get_text()

		content_node = soup.find('div',class_='post-mod post-left').find('div',class_='post-cont')
		
		if content_node is None:
			data['content'] = 'None'
		else:	
			data['content'] = str(content_node)

		return data
